Use REGEX to Replace Single Quotes with Double Quotes Around Domain
我需要替换我的网站周围的所有单引号实例。我想用双引号替换单引号。我知道一个正则表达式应该能做到这一点,但我不知道如何构造它。我希望它能影响任何包含以http://www.website.com开头的字符串的单引号。
基本上,我希望能够运行查找和替换,并拥有当前类似的代码:
1 2 3 | <img src='http://www.website.com/images/icons/main_icon.png' width='100' scalefit='1'> Click Here <form action='http://www.website.com/action.php?action=$action_type' method='post'> |
变成这样:
1 2 3 | <img src="http://www.website.com/images/icons/main_icon.png" width='100' scalefit='1'> Click Here <form action="http://www.website.com/action.php?action=$action_type" method='post'> |
PHP的domDocument类会自动为您执行此操作。您只需要加载HTML并将其保存回去。这可能比regex更好,因为它不依赖于标记格式。缺点是它将修复所有HTML,而不仅仅是以特定域开头的属性的引号。
1 2 3 4 | $dom = new DOMDocument; libxml_use_internal_errors(TRUE); $dom->loadHTML($html); $result = $dom->saveHTML(); |
演示
我看不到仅替换某个特定HTML标记的用例。但是我不知道你想要完成什么,所以我也会提供一个regex解决方案:
1 |
这将使用一个正的先行检查来检查属性值是否以您定义的URL开头。
ReGEX101演示
我假设您只想匹配前缀是
注意,在下面的表达式中,我们使用
1 2 3 4 5 6 | <?php $input="<img src='http://www.website.com/images/icons/main_icon.png' width='100' scalefit='1'>"; $output = preg_replace("!src='(http://www\.website\.com[^']+)'!", 'src="\\1"', $input); echo $output." "; ?> |
您可以匹配以下regex:
替换为:
演示:http://regex101.com/r/wq7jv5