개발자 stdClass
객체를 사용하여 그에 따라 처리하는 작은 CMS에서 작업하고 있습니다. stdClass
에는 배열 및 기타 개체가 포함되어 있습니다. 이러한 객체 중 하나는 변수 객체입니다. 변수 객체가 많이있을 수 있습니다.문자열의 자리 표시 자 일치 및 바꾸기
덜 혼란스럽게 만들기 위해 코드를 보여주는 대신 설명 할 것입니다. 개발자는 변수와 해당 변수에 들어갈 수있는 값 집합을 지정합니다. 사용자가 지정하는 값은 다차원 배열 일 수 있습니다.
//Add variable1
$variable = $variables[] = new stdClass;
$variable->name = 'var1'; $variable->generator = 'function'; $variable->value = 'v'; $variable->enum = array (array('Mars', 9.8), array('Earth', 3.77)); $variable->description; $variable->callback = 'callback_function';
//Add variable2
$variable = $variables[] = new stdClass;
$variable->name = 'var1'; $variable->generator = 'function'; $variable->value = 'v'; $variable->enum = array (array('Mars', 9.8), array('Earth', 3.77)); $variable->description; $variable->callback = 'callback_function';
현상이 변수가 배치 될 위치를 지정할 수있는 stdClass 어느 시점이 변수는 객체를 생성하는 방법의 일례이다. 자리 표시 자 템플릿은 다음과 같습니다. $variables[0]
첫 번째 변수를 선택하거나 $variables[0][1]
첫 번째 변수를 선택한 다음 해당 변수의 첫 번째 요소를 선택합니다. 나는 그것이 의미가 있기를 바랍니다.
필자는 텍스트 조각을 통과하고 모든 자리 표시자를 올바른 값으로 바꾸는 PHP 알고리즘을 고안해야합니다.
내 솔루션
- 새로운 배열로 모든 변수 -> 값을 가져옵니다. 나는 이것을 성공적으로 해냈다.
- 텍스트의 모든 자리 표시자를 가져옵니다. 나는이 시점에서 붙어있다. 나는 정규 표현식을 많이 사용하지 않는다.
- 제가 사용 시작일 :
으로, preg_match_all를 ('/ \ $ 변수 [0-9A-ZA-Z] +] /'$ 텍스트를 $ matched_placeholders); 이 ..하지만
는 $variables[0]
일치하고 나는이 같은 변화에 맞게 확장 트링 오전 : 나는 배열에 자리하고 변수 값이 있으면 등 $variables[0][1]
또는 $variables[0][2][0]
,
을 다른 배열로. foreach
루프를 수행하고 모든 자리 표시자를 바꿀 수 있습니다.
모든 조언을 주시면 감사하겠습니다. 이 정규식 패턴과 일치해야하는 정규식 패턴은 $variables[0][2][0]
...이 일치
preg_match_all('/\$variables((\[[0-9a-zA-Z]+\])*)/', $text, $matched_placeholders);
:
안녕하세요. 입력 해 주셔서 감사합니다. 당신은 정말로 도움이되었습니다. 문제 해결됨! – user3072613