我需要在脚本中做一些修改。
我需要打开iframe标记内的2个特定字符(“
和»
)更改为双引号("
)。
例如:
<iframe src=»http://test.test″>»hellohello»</iframe>
需要变成:
<iframe src="http://test.test">»hellohello»</iframe>
我的代码到目前为止:
$content = preg_replace("/\<[“]\>/","\"",$content);
$content = preg_replace("/\<[»]\>/","\"",$content);
但这并不像预期的那样起作用。
4条答案
按热度按时间yxyvkwin1#
你有错误的正则表达式内。
它的确切意思是:
将替换为报价。其他站点的工作示例:
这里使用了str_replace,你可以在那里传递任何引号。你应该对preg_replace_callback做同样的事情,它推荐给较新的PHP版本(从5.5 /e开始,标志被弃用)。示例(不确定它是否有效,但你明白了):
或者用许多不同的引号创建数组:
bqucvtff2#
要替换开头iframe标记中的一个或多个恶意多字节字符(以HTML无知的方式),可以在
preg_replace_callback()
中调用strtr()
或str_replace()
。(Demo)或者
因为HTML是“损坏的”/无效的,所以可能不值得尝试使用适当的DOM解析器来纠正标记。
2ekbmq323#
这个应该可以
一个regexp,匹配
<
和>
之间包含»
、“
或″
的任何内容。替换为\1
(第一个捕获组)。后跟"和\2
(第二个捕获组)。希望能有所帮助
qxsslcnc4#
一种解决方案是不使用preg_replace,如果格式与您所描述的相同,则可以简单地使用str_replace。