在html文件中我有像
这样的链接 <a href="index_split_037.xhtml#id145937_n22">
。
如何在完成
的过程后对其进行全部修改 <a href="#id145937_n22">
。
基本上,我只需要保留主题标签。
答案 0 :(得分:1)
正则表达式:
(<a href=")[^#]*([^>]*>)
替换字符串:
\1\2
示例:
<?php
$mystring = "The input string foo <a href=\"index_split_037.xhtml#id145937_n22\"> bar";
echo preg_replace('~(<a href=")[^#]*([^>]*>)~', '\1\2', $mystring);
?>
输出:
The input string foo <a href="#id145937_n22"> bar
<强>解释强>
(<a href=")
字符串<a href="
由第1组捕获。[^#]*
匹配任何不属于#
零次或多次的字符。找到符号#
后,正则表达式引擎会停止匹配操作。([^>]*>)
同样,下一个>
符号的下列字符将被第2组捕获。答案 1 :(得分:0)
答案 2 :(得分:-1)
您可以使用ob_start
来捕获输出,使用preg_replace
来更改href
属性:
<?php
ob_start(); // Capture the output
?>
<!--- Links --->
<a href="index_split_037.xhtml#id145937">Link 1</a>
<a href="index_split_038.xhtml#id147_n22">Link 2</a>
<a href="index_split_039.xhtml#id_n22">Link 3</a>
<a href="index_split_040.xhtml#145937_n22">Link 4</a>
<?php
$output = ob_get_contents(); // Get the output
ob_end_clean(); // Finish capture
// Remove the letters in href attribute before the hash # maintaining the others attributes
echo preg_replace('/<a(.*)href="([^"#]*)#([^"]*)"(.*)>/','<a$1href="#$3"$4>', $output);
?>
请参阅regexp:http://regexr.com/39bmb。 了解示例的工作原理:SandBox example。