채택완료

여러개 preg_replace 질문

2020-12-12 (토) 11:49:13 2,969

$stx = preg_replace("/(1)/", "a", $stx);

이런게 있다고 할때

$stx = preg_replace("/(2)/", "b", $stx);

$stx = preg_replace("/(3)/", "c", $stx);

$stx = preg_replace("/(4)/", "d", $stx);

.

.

.

이런식으로 쭉 만들고 싶은데 이걸 한줄로 표현 가능할까요?

답변 2개 / 댓글 4개

채택된 답변
+20 포인트

for문 쓰시면됩니다

$count = 7;//반복할갯수

for($i=0;$i<$count;$i++){

  $stx = preg_replace("/(".$i.")/", "b", $stx);

}

답변에 대한 댓글 1개

감사합니다

찾는 값과 바꿀 값을 모두 배열로 넘길 수 있습니다.

성능면에서 조금 이득을 보지 않을까 짐작합니다.

https://www.php.net/manual/en/function.preg-replace.php

Copy
<?php
$string = 'The quick brown fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>

답변에 대한 댓글 3개

감사합니다 말씀하신 방법은 배열순서와 상관없이 바꿔지나요?

값이 무작위로 와서요
위 예제가 매뉴얼 사이트에 있는걸 카피했는데 좀 헷갈리게 되어 있습니다.

배열 순서대로 지정됩니다.

pattern[0] - replace[0]
pattern[1] - replace[1]

이런 방식입니다.
답변 너무 감사합니다.

저는 배열이 어떻게 올지 몰라서 a가 앞에 올지 c가 앞에 올지 이런 상황이라 ㅠㅠ

다른걸 좀 찾아봐야 겠어요 ㅠㅠ 너무 감사합니다

답변을 작성하려면 로그인이 필요합니다.