0

次のような URL を置換するための正規表現が必要です。

http://www.domain.com/web/

私は試した:

$pattern = '/\bhttp\S*\/"\b/';

しかし、動作しません。

文字列の最初と最後が必要です。これは JSON 文字列で、

"ImgRemotePath":"http:\/\/localhost\/\/web\/images\/obj\/car.png"

また

"ImgRemotePath":"http:\/\/localhost\/\/web\/images\/"

最後に削除する必要があります:

"ImgRemotePath":"http:\/\/localhost\/\/web\/images\/"

"ImgRemotePath":""
4

2 に答える 2

1

これは、あなたが探しているものであるはずです:

<?php
// Subject data
$json = '"ImgRemotePath":"http://localhost/web/images/obj/car.png"';

// First procedure: Using regular expression to match and replace
/* Will match anything except '"' inside the JSON value
 * This limitation means that you should improve the regular expression, if
 * you wish to parse values that includes the '"' character, i.e. improve the
 * regular expression if this is needed, or use the alternative procedure     */
$result = preg_replace('/"ImgRemotePath":"[^"]*"/', '"ImgRemotePath":""', $json);

print $result;

/* Alternative procedure: Decoding, deleting value and encoding back to JSON */
// Convert JSON to associative array
$jsonArray = json_decode('{' . $json . '}', true);

// Set value to empty string
$jsonArray['ImgRemotePath'] = '';

// Cast/encode to JSON
$jsonString = json_encode($jsonArray);

// Remove '{' and '}'
$result = substr($jsonString, 1, strlen($jsonString) - 2);

print $result;
于 2013-10-11T09:10:32.217 に答える
0
"http.*/"

このパターンを試してください。基本的に、「http、任意の文字を使用でき、/で終わる」で始まります

于 2013-10-11T08:44:49.333 に答える