Về cơ bản, tôi cần biểu thức regex để khớp với tất cả các chuỗi được trích dẫn đôi bên trong các thẻ PHP mà không có biến bên trong.Regex để đối sánh các chuỗi được trích dẫn kép mà không có biến bên trong các thẻ php
Dưới đây là những gì tôi có cho đến nay:
"([^\$\n\r]*?)"(?![\w ]*')
và thay thế bằng:
'$1'
Tuy nhiên, điều này sẽ phù hợp với điều bên ngoài thẻ PHP là tốt, ví dụ HTML thuộc tính.
Ví dụ trường hợp:
<a href="somelink" attribute="value">Here's my "dog's website"</a>
<?php
$somevar = "someval";
$somevar2 = "someval's got a quote inside";
?>
<?php
$somevar3 = "someval with a $var inside";
$somevar4 = "someval " . $var . 'with concatenated' . $variables . "inside";
$somevar5 = "this php tag doesn't close, as it's the end of the file...";
nó phải phù hợp và thay thế tất cả những nơi mà "
nên được thay thế bằng một '
, điều này có nghĩa rằng các thuộc tính html lý tưởng nên bị bỏ lại một mình.
Ví dụ đầu ra sau khi thay thế:
<a href="somelink" attribute="value">Here's my "dog's website"</a>
<?php
$somevar = 'someval';
$somevar2 = 'someval\'s got a quote inside';
?>
<?php
$somevar3 = "someval with a $var inside";
$somevar4 = 'someval ' . $var . 'with concatenated' . $variables . 'inside';
$somevar5 = 'this php tag doesn\'t close, as it\'s the end of the file...';
Nó cũng sẽ là tuyệt vời để có thể phù hợp với bên trong kịch bản thẻ quá ... nhưng điều đó có thể đẩy nó cho một regex thay thế.
Tôi cần phương pháp tiếp cận regex, không phải là cách tiếp cận PHP. Giả sử tôi đang sử dụng regex-replace trong trình soạn thảo văn bản hoặc JavaScript để dọn sạch mã nguồn PHP.
Sử dụng 'preg_replace_callback()' để khớp các thẻ php và trong gọi lại sử dụng cụm từ thông dụng của bạn. – HamZa
@HamZa Điều gì xảy ra nếu có một cái gì đó như thế này trong php: '$ a = ' Php echo' booooo !; ?> '; '? – hek2mgl
@ hek2mgl Bạn có thể cho tôi biết cơ hội xảy ra trong bối cảnh chung không? – HamZa