2

$string = preg_replace("#[name=([a-zA-Z0-9 .-]+)*]#",''."$1",$string);

スクリプトのこの部分は機能しません:

str_replace(' ', '-', "$1")

" " を "-" に置き換える必要がありますpreg_replace。また、 main 内preg_replacestr_ireplaceも試します。

しかし、これはまだ機能していません

4

2 に答える 2

5

置換は、置換ごとではなく、事前に評価されます。eただし、正規表現で修飾子を使用することでこれを行うことができます。

$string = preg_replace("#\[name=([a-zA-Z0-9 .-]+)*]#e", '"<td><a href=\"$front_page/".str_replace(" ", "-", "$1")."\">$1</a></td>"', $string);

または使用してpreg_replace_callback

function callbackFunction($match) {
    global $front_page;
    return '<td><a href="'.$front_page.'/'.str_replace(" ", "-", $match[1]).'">'.$match[1].'</a></td>';
}
$string = preg_replace_callback("#\[name=([a-zA-Z0-9 .-]+)*]#", 'callbackFunction', $string);
于 2009-10-22T11:58:26.923 に答える
1

$1では使用できないため、2 つの手順で行う必要があると思いますstr_replace()$1実際には変数として存在しません。置換文字列のプレースホルダーにすぎません。

于 2009-10-22T11:59:40.853 に答える