我有一个下一个字符串:
$str = '<h2 id="name of header">Name of header</h2>';
需要替换ID属性中的所有空格。例如:
$str = '<h2 id="name-of-header">Name of header</h2>';
我有什么方法可以做到吗?
答案 0 :(得分:0)
由于id是引号之间的唯一部分 - 在引号处将其展开 - 使用str_replace替换中间部分(id部分)中的空格,然后将它们连接回一个字符串。
这意味着...... explode('“',$ str);会给你结果:
$str_portions[0] = <h2 id=
$str_portions[1] = name of header
$str_portions[2] = >Name of header</h2>;
使用str_replace('',' - ',$ str_portions [1])str_replace $ str_portions [1]中带连字符的空格;会给:
$str_portions[1] = name-of-header
所以以下是:
$str = '<h2 id="name of header">Name of header</h2>';
$str_portions = explode('"',$str); // splits the original statement into 3 parts
$str_id = str_replace(' ', '-', $str_portions[1]); // replaces the spaces with hyphens in the 2nd (id) portion
$str = $str_portions[0] . '"' . $str_id . '"' . $str_portions[2]; // joins all 3 parts into a single string again - reinserting the quotes
echo $str; // gives '<h2 id="name-of-header">Name of header</h2>';
答案 1 :(得分:0)
<?php
$str = '<h2 id="name of header">Name of header</h2>';
$new_str = preg_replace_callback('#\"([^"]*)\"#', function($m){
return('"'. str_replace(' ', '-', $m[1]) .'"');
}, $str);
echo $new_str;
?>
它会完美运作 感谢
答案 2 :(得分:0)
您可以使用preg_replace仅替换字符串中要替换的部分。
您也可以使用import R from '@types/ramda'
但是,您必须只选择要替换的部分。
使用preg_replace,您可以执行以下操作:
str_replace
<?php
$str = '<h2 id="name of header">Name of header</h2>';;
$new_str = preg_replace(
'id="([\w\s]+)"',
'id="' . str_replace(' ', '-', $1) . '"',
$str);
?>
只选择ID部分,而id="([\w\s]+)"
会用&#39; - &#39;替换其中的空格。
但如果您不熟悉正则表达式,我建议您使用更简单的gavgrif解决方案。